import request from '@/utils/request';
import {AxiosPromise} from 'axios';
import {FileInfo} from './types';

/**
 * 上传文件
 *
 * @param file
 */
export function uploadImage(file: File): AxiosPromise<FileInfo> {
    // 文件下载
    console.info("文件上传")

    const formData = new FormData();
    formData.append('file', file);
    return request({
        url: '/manager/repository/product/upload',
        method: 'post',
        data: formData,
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    });
}

/**
 * 上传文件
 *
 * @param file
 */
export function uploadFile(file: File, modelName: string, modelType: string, modelVersion: string, component: string, commitKey: string): AxiosPromise<FileInfo> {
    // 文件下载
    console.info("文件上传")

    const formData = new FormData();
    formData.append('file', file);
    formData.append('modelType', modelType);
    formData.append('modelName', modelName);
    formData.append('modelVersion', modelVersion);
    formData.append('component', component);
    formData.append('commitKey', commitKey);
    return request({
        url: '/manager/repository/component/upload',
        method: 'post',
        data: formData,
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    });
}


/**
 * 下载文件
 * @param response
 * @param fileName
 */
export function downloadFile(data: any, fileName: string): any {
    // 文件下载
    console.info("文件下载")
    const blob = new Blob([data], {
        type: "application/file",
    });
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement("a");
    a.href = url;
    a.download = fileName; // 文件名称需要自己定义。如果需要知道也可以在header中自定义一个文件名称返回 也可以随机生成一个 我这里是已经提前知道了文件名
    a.click();
}

export function downloadFiles(fileName: any, url: any): any {
    // 文件下载
    console.info("文件下载")
    const link = document.createElement("a");
    link.href = url;
    link.download = fileName; // 文件名称需要自己定义。如果需要知道也可以在header中自定义一个文件名称返回 也可以随机生成一个 我这里是已经提前知道了文件名
    link.target = "_blank";
    link.click();
}

